package com.eastfair.imaster.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.eastfair.annotation.annotation.vo.VoInfo;
import com.eastfair.vo.VoProductClass;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;


/**
 * <p>
 * 展品vo
 * </p>
 *
 * @author liuxiaobai
 * @since 2021-08-19
 */
@Data
@ApiModel(value = "ExhibitorProductVo", description = "展品VO")
public class ExhibitorProductVO implements Serializable {

    private static final long serialVersionUID = 1L;

    @Excel(name = "")
    private Long id;

    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID")
    private Long projectId;

    /**
     * 当前发布到的展会ID
     */
    @ApiModelProperty(value = "当前发布到的展会ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long exhibitionId;

    /**
     * 公司ID
     */
    @ApiModelProperty(value = "公司ID")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Long companyId;

    private Long productId;

    /**
     * 展品名称
     */
    @ApiModelProperty(value = "展品名称")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoProductClass.SimpleInfo.class})
    private String name;

    /**
     * 展品英文名称
     */
    @ApiModelProperty(value = "展品英文名称")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoProductClass.SimpleInfo.class})
    private String enName;

    /**
     * 展品品牌
     */
    @ApiModelProperty(value = "展品品牌")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String brand;

    /**
     * 展品品牌英文
     */
    @ApiModelProperty(value = "展品品牌英文")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String enBrand;

    /**
     * 展品描述
     */
    @ApiModelProperty(value = "展品描述")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String introduction;

    /**
     * 展品英文介绍
     */
    @ApiModelProperty(value = "展品英文介绍")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String enIntroduction;

    /**
     * 宣传视频
     */
    @ApiModelProperty(value = "宣传视频")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String advertsVideo;

    /**
     * 宣传视频缩略图
     */
    @ApiModelProperty(value = "宣传视频缩略图")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String advertsVideoImage;

    /**
     * 宣传图片
     */
    @ApiModelProperty(value = "宣传图片")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String advertsImage;

    /**
     * 长图
     */
    @ApiModelProperty(value = "长图")
    @Excel(name = "长图")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String longImage;

    /**
     * 封面图
     */
    @ApiModelProperty(value = "封面图")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoProductClass.SimpleInfo.class})
    private String icon;

    /**
     * 展品标识（新品、爆品）
     */
    @ApiModelProperty(value = "展品标识（新品、爆品）")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String mark;

    /**
     * 展品英文标识
     */
    @ApiModelProperty(value = "展品英文标识")
    @Excel(name = "展品英文标识")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String enMark;

    /**
     * 网址
     */
    @ApiModelProperty(value = "网址")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String website;

    /**
     * 销售价格
     */
    @ApiModelProperty(value = "销售价格")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private BigDecimal price;

    /**
     * 型号
     */
    @ApiModelProperty(value = "型号")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String model;

    /**
     * 尺寸规格
     */
    @ApiModelProperty(value = "尺寸规格")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String size;

    /**
     * 审核状态
     */
    @ApiModelProperty(value = "审核状态")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String verifyState;

    /**
     * 审核理由
     */
    @ApiModelProperty(value = "审核理由")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String verifyContent;

    /**
     * 展品第一个首字母(大写)
     */
    @ApiModelProperty(value = "展品第一个首字母(大写)")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String initial;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoProductClass.SimpleInfo.class})
    private Integer sequence;

    /**
     * 展品标识
     */
    @ApiModelProperty(value = "展品标识")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String identification;

    /**
     * 展品英文标识
     */
    @ApiModelProperty(value = "展品英文标识")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String enIdentification;

    /**
     * 是否有定制服务
     */
    @ApiModelProperty(value = "是否有定制服务")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean customizationServices;

    /**
     * 是否有现货
     */
    @ApiModelProperty(value = "是否有现货")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean spotTrading;

    /**
     * 可提供最小订货量
     */
    @ApiModelProperty(value = "可提供最小订货量")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String minOrderQuantity;

    /**
     * 条形码
     */
    @ApiModelProperty(value = "条形码")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private String varCode;

    /**
     * 是否为草稿
     */
    @ApiModelProperty(value = "是否为草稿")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Boolean draft;

    /**
     * 可见范围(0全部可见，1仅客户池观众，2仅预登记观众可见，3仅客户池并且预登记观众可见)
     */
    @ApiModelProperty(value = "可见范围(0全部可见，1仅客户池观众，2仅预登记观众可见，3仅客户池并且预登记观众可见)")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private Integer scope;

    /**
     * 是否生效(默认1：可用 0:不可用)
     */
    @ApiModelProperty(value = "是否生效(默认1：可用 0:不可用)")
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoProductClass.SimpleInfo.class})
    private Boolean enabled;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(
            shape = JsonFormat.Shape.STRING,
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @DateTimeFormat(
            pattern = "yyyy-MM-dd HH:mm:ss"
    )
    @JsonInclude(JsonInclude.Include.NON_NULL)
    @VoInfo(groups = {VoProductClass.SimpleInfo.class})
    private LocalDateTime createTime;

}
